This function changes note-lengths to note-length rests to align with pause-symbols when they occur in a symbol-pattern.
(align-to-symbol '(a = c = d = f)
'(1/8 1/8 1/8 1/8 1/8 1/8 1/8))
--> (1/8 -1/8 1/8 -1/8 1/8 -1/8 1/8)
The output can then be used as a rhythmic variant produced directly from the symbol-pattern. This can be invaluable when processing with find-change or find-beat, and when devising variants with length-condense. By setting a length-value rather than length-pattern the function automatically builds a list of that value of equal length to the symbol- pattern and then processes it.
(setq melody
(find-change
(vector-to-symbol a g
(gen-sin 1 0.5 24 90 (gen-sin 1 0.3 24)))))
--> (d e f = g = = f = e = d = = = c = = b = a = = c)